Many computer operating environments track events, such as, for example, the access of various software entities (“objects”) by each user in the operating environment. One reason for tracking user-to-object access events is to enable the capability of supplying to a given user a list of objects that have been recently accessed by the user (“recent artifacts”). When a user desires to access an object, often the desired object has been recently accessed by the user and will be included in the list of recent artifacts. In this case, the user may conveniently select the object from the list of recent artifacts rather than searching and locating the object in another manner.
Systems that maintain the list of recent artifacts such as, for example, user-to-object access events, often do so by way of a relational database. The user-to-object accesses are made concurrently, so that the system that maintains the database should be able to handle accesses that occur simultaneously or near-simultaneously while ensuring that every access is processed for recording. The processing of the concurrent user-to-object accesses should be accomplished without overly degrading the performance of the system. In addition, as the multiple users access various objects the list of recent artifacts grows, causing the list to occupy an increasing amount of memory.